""""""
"""
正则 元字符匹配规则
看同目录的 PNG 图片文件
"""
import re
# 单字符匹配相关
字符串 = "孙新罡 12 9 #qeeqq#@#% A 83..!~.太e  D eggjR 人5新2&U^  9单E个4$"
匹配信息 = re.findall(r"\d", 字符串)  # 找所以数字
# 特别说明: 加一个 r ,编程里 \ 是有特殊意义的,叫转义字符.  这里我们不要它的特殊意义,所以加一个 r
print(匹配信息)

匹配信息 = re.findall(r"\W", 字符串)  # 找特殊字符(除了字母和数字) 就是非单词匹配
print(匹配信息)

匹配信息 = re.findall(r"[a-zA-Z]", 字符串)  # 找小写字母 和 大小字母
print(匹配信息)

匹配信息 = re.findall(r"[新罡]", 字符串)  # 找指定的字符
print(匹配信息)

匹配信息 = re.findall(r"[0-2]", 字符串)  # 找指定范围的数字数字
print(匹配信息)

匹配信息 = re.findall(r"\D", 字符串)  # 匹配除数字以外的
print(匹配信息)
print()

# 下面是数量匹配相关
字符串1 = "sxg 2011 uu44 u9"
匹配信息1 = re.findall(r"\d{2,}", 字符串1)  # 分别 \d* \d+ \d?  看看区别 {m} {m,} {m,n}
print(匹配信息1)

print("\n-------------------案例--------------------")
"""
下面说几个案例
匹配账户,只能由字母和数字组成,长度限制6到100位
规则: ^[0-9a-zA-Z]{6, 10}$

匹配QQ号,要求纯数字,长度5-11,第一位不能是0
规则: ^[1-9][0-9]{4, 10}$
[1-9] 是匹配第一位的, [0-9] 匹配第一位 后面的数字

匹配邮箱地址,只允许qq, 163, gmail这三种邮箱地址
规则: ^[\w-]+(\.[\w-]+)*@(qq | 163 | gmail )(\.[\w-]+)+$
"""
# 匹配账户,只能由字母和数字组成,长度限制6到100位
规则 = "^[1-9][0-9]{4,10}$"   # 特别说明正则里,空格也是有意义的. 千万不要额外加空格,和代码规范不同
字符串 = "1234567"
print(re.findall(规则, 字符串))  # 把 ^和$ 分别去掉,字符串前后加上字母看看
print()

# 匹配QQ号,要求纯数字,长度5-11,第一位不能是0

规则 = "^[1-9][0-9]{4,10}$"
字符串 = "79452237"
print(re.findall(规则, 字符串))  # 把 ^和$ 分别去掉,字符串前加0 看看
print()

# 匹配邮箱地址,只允许qq, 163, gmail这三种邮箱地址
规则 = r"(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)+(\.[\w-]+)+$)"  # 表达式最外层在加一个括号
字符串 = "sxingang.344@qq.com"
print(re.findall(规则, 字符串))  # 特别说明 findall 方法,如果表达式里带括号.要在最外层在加一个括号
print(re.match(规则, 字符串))
